package cn.yeziji.forum.common;

/**
 * 基础枚举参数
 *
 * @author hwy
 * @since 2023/07/13 13:51
 **/
public interface BasicEnum {

  /**
   * 根据 code 获取枚举
   *
   * @param code 枚举 code
   * @return {@link Enum} 枚举
   */
  Enum getByCode(final int code);

  /**
   * 根据 desc 获取枚举
   *
   * @param desc 枚举介绍
   * @return {@link Enum} 枚举
   */
  Enum getByDesc(final String desc);

  /**
   * 数据对象
   *
   * @param value 数值
   * @return {@link Enum} 枚举
   */
  Enum getByValue(final Object value);

  /**
   * 根据 code 判断是否有当前枚举
   *
   * @param code 枚举 code
   * @return {@link Boolean} 是否存在 code 枚举
   */
  boolean hasCode(final int code);

  /**
   * 根据 desc 判断是否有当前枚举
   *
   * @param desc 枚举介绍
   * @return {@link Boolean} 是否存在 desc 枚举
   */
  boolean hasDesc(final String desc);

  /**
   * 根据 value 判断是否有当前枚举
   *
   * @param value 数值对象
   * @return {@link Boolean} 是否存在 value 枚举
   */
  boolean hasValue(final Object value);
}
